home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / applications / wp / chinesetex.lha / cjk / src / hbf.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-19  |  1.3 KB  |  69 lines

  1. /*
  2.  *    Two interfaces to HBF files -- take your pick.
  3.  *
  4.  *    Ross Paterson <rap@doc.ic.ac.uk>
  5.  */
  6. #ifndef _HBF_
  7. #define _HBF_
  8.  
  9. #ifndef __STDC__
  10. #    ifndef const
  11. #        define const
  12. #    endif
  13. #endif
  14.  
  15. /*@*/
  16.  
  17. /*
  18.  *    #1: a lightweight C interface.
  19.  */
  20.  
  21. typedef    unsigned int    HBF_CHAR;
  22.  
  23. typedef struct {
  24.     unsigned short    hbf_width;
  25.     unsigned short    hbf_height;
  26.     short        hbf_xDisplacement;
  27.     short        hbf_yDisplacement;
  28. } HBF_BBOX;
  29.  
  30. typedef struct {
  31.     /* fields corresponding to the definition */
  32.     HBF_BBOX    hbf_bitmap_bbox;    /* HBF_BITMAP_BOUNDING_BOX */
  33.     HBF_BBOX    hbf_font_bbox;        /* FONTBOUNDINGBOX */
  34. } HBF;
  35.  
  36.  
  37. /* but defined here as a macro */
  38. #define    hbfBitmapBBox(hbf)    (&((hbf)->hbf_bitmap_bbox))
  39.  
  40. /* but defined here as a macro */
  41. #define    hbfFontBBox(hbf)    (&((hbf)->hbf_font_bbox))
  42.  
  43. #define    HBF_RowSize(hbf)\
  44.     ((hbfBitmapBBox(hbf)->hbf_width + 7)/8)
  45.  
  46. #define    HBF_BitmapSize(hbf)\
  47.     (HBF_RowSize(hbf) * hbfBitmapBBox(hbf)->hbf_height)
  48.  
  49. #define    HBF_GetBit(hbf,bitmap,x,y)\
  50.     (((bitmap)[(y)*HBF_RowSize(hbf) + (x)/8]>>(7 - (x)%8))&01)
  51.  
  52.  
  53. /*@*/
  54.  
  55. /*
  56.  *    #2: taken from Appendix 2 of the HBF draft.
  57.  */
  58.  
  59. typedef    unsigned int    HBF_HzCode;
  60. typedef unsigned char    HBF_Byte ;
  61. typedef HBF_Byte *    HBF_BytePtr ;
  62. typedef HBF *            HBF_Handle ;
  63. typedef HBF_Handle *    HBF_HandlePtr ;
  64. typedef char *            String ;
  65.  
  66. extern void hbfClose (HBF *hbfFile);
  67.  
  68. #endif
  69.